﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BUS;
using System.Globalization;

namespace TiDiSun
{
    public partial class frmChonAcquy : Form
    {
        public frmChonAcquy()
        {
            InitializeComponent();
        }

        #region "Thuộc tính"

        //Biến này để lưu số ah cần của acquy
        private float _ah;

        //Biến này lưu thông tin công suất pin, cách dùng, số ngày dùng dự phòng
        private List<string> _arrThamSo;

        public static DataTable _dt; //Biến này lưu thông tin các acquy được dùng

        //Biến này lưu giá acquy phải trả
        public static int _tong_tien_acquy;

        #endregion

        #region "Phương thức tính toán"
        //Khi chưa chọn acquy trong danh sách được tư vấn, người dùng không thêm chọn thêm vào.
        private void AnChonAcQuy() {
            txtSoLuongAcquyDuocChon.Enabled = false;
            btnChonThemAcquy.Enabled = false;
        }

        //Khi đã chọn acquy trong danh sách dc tư vấn, nút thêm sẽ dc hiện lên.
        private void HienChonAcquy() {
            txtSoLuongAcquyDuocChon.Enabled = true;
            btnChonThemAcquy.Enabled = true;
        }

        //Khi chưa chọn acquy trong danh sách đã chọn, người dùng ko thể xóa acquy đã chọn
        private void AnXoaAcQuy() {
            btnXoaAcquyDaChon.Enabled = false;
        }

        //Khi đã chọn acquy trong danh sách đã chọn, người dùng có thể xóa acquy đã chọn
        private void HienXoaAcQuy()
        {
            btnXoaAcquyDaChon.Enabled = true;
        }

        //Hàm này để tính số ah của acquy
        private void tinh_ah()
        {
            switch (cmbCachDung.Text)
            {
                case "Dùng Dự Phòng":
                    _ah = float.Parse(txtCongSuat.Text) / 2 * float.Parse(_arrThamSo[2]);
                    break;
                default:
                    _ah = float.Parse(txtCongSuat.Text) / 2;
                    break;
            }
        }


        //Phương thức khởi tạo cột của datagridview
        private void khoi_tao_cot() {
            _dt = new DataTable();
            _dt.Columns.Add("Mã acquy", typeof(string));
            _dt.Columns.Add("Tên acquy", typeof(string));
            _dt.Columns.Add("Số Ah", typeof(int));
            _dt.Columns.Add("Số lượng", typeof(int));
            _dt.Columns.Add("Đơn giá", typeof(int));
            _dt.Columns.Add("Thành tiền", typeof(int));

            dtgvDanhSachAcquyDaChon.AllowUserToAddRows = false;
            dtgvDanhSachAcquyDaChon.DataSource = _dt;
            
        }
        int tong_tien = 0;
        //Hàm này tính toán dữ tổng tiền acquy phải trả 
        private void tinh_tong_tien_acquy() {
            
            foreach(DataRow r in _dt.Rows) {
                tong_tien += int.Parse(r[5].ToString());
            }
            _tong_tien_acquy = tong_tien;
            txtGia.Text = tong_tien.ToString("###,###,##0.", CultureInfo.InvariantCulture).TrimStart().Replace(".", ",") + " VND";
        }

        #endregion

        private void frmChonAcquy_Load(object sender, EventArgs e)
        {
            _arrThamSo = (List<string>)this.Tag;
            txtCongSuat.Text = _arrThamSo[1];
            cmbCachDung.Text = _arrThamSo[0];

            tinh_ah();
            txtAH.Text = _ah.ToString();
            load_acquy();
            txtGia.Text = "0";

            AnChonAcQuy();
            AnXoaAcQuy();

            khoi_tao_cot();
        }

        private void load_acquy()
        {
            gvAcquy.DataSource = AcQuyBUS.lay_danh_sach_acquy(_ah);
        }

        private void gvAcquy_Click(object sender, EventArgs e)
        {
            HienChonAcquy();
        }

        private void btnChonThemAcquy_Click(object sender, EventArgs e)
        {
            try
            {
                int SoLuongAcQuyDuocChon = int.Parse(txtSoLuongAcquyDuocChon.Text);
                if (SoLuongAcQuyDuocChon > 0)
                {
                    DataGridViewRow row = gvAcquy.SelectedRows[0];
                    dtgvDanhSachAcquyDaChon.AllowUserToAddRows = true;
                    _dt.Rows.Add(row.Cells[0].Value.ToString(), row.Cells[1].Value.ToString(), row.Cells[2].Value.ToString(), txtSoLuongAcquyDuocChon.Text, row.Cells[3].Value.ToString(), (int.Parse(row.Cells[3].Value.ToString()) * int.Parse(txtSoLuongAcquyDuocChon.Text)).ToString());
                    dtgvDanhSachAcquyDaChon.DataSource = _dt;
                    tinh_tong_tien_acquy();
                }
                else
                {
                    MessageBox.Show("Số lượng phải lớn hơn 0");
                }
            }
            catch
            {
                MessageBox.Show("Chưa có dữ liệu");
            }
            
        }

        private void dtgvDanhSachAcquyDaChon_Click(object sender, EventArgs e)
        {
            HienXoaAcQuy();
           
        }

        private void btnXoaAcquyDaChon_Click(object sender, EventArgs e)
        {
            try
            {
                int index = dtgvDanhSachAcquyDaChon.SelectedRows[0].Index;
                _dt.Rows.RemoveAt(index);
                dtgvDanhSachAcquyDaChon.DataSource = _dt;
                tinh_tong_tien_acquy();
            }catch(Exception ex) {
                MessageBox.Show(ex.Message);
            }
        }

        private void dtgvDanhSachAcquyDaChon_DoubleClick(object sender, EventArgs e)
        {
            try
            {
                frmCapNhatSoLuongAcQuy frm = new frmCapNhatSoLuongAcQuy();
                int index = dtgvDanhSachAcquyDaChon.SelectedRows[0].Index;
                frm.Tag = _dt.Rows[index][3].ToString();
                frm.ShowDialog();

                if (frmCapNhatSoLuongAcQuy._soLuong >= 1)
                {
                    _dt.Rows[index][3] = frmCapNhatSoLuongAcQuy._soLuong.ToString();
                    _dt.Rows[index][5] = frmCapNhatSoLuongAcQuy._soLuong * int.Parse(_dt.Rows[index][4].ToString());
                    dtgvDanhSachAcquyDaChon.DataSource = _dt;
                    tinh_tong_tien_acquy();
                }
            }
            catch
            {
                MessageBox.Show("chưa có dữ liệu");
            }
         
        }

        private void btnDongY_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            if (_dt.Rows.Count > 0)
            {
                HoaDonHelper.dt = _dt;
                HoaDonHelper.tongtien = tong_tien;
                this.Close();
            }
        }

      

     
        

    }
}
